package com.mlh.dp.基础题目;

/**
 * @author 缪林辉
 * @date 2024/4/17 10:32
 * @DESCRIPTION
 */
// 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
// 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢？
public class 爬楼梯 {
    public int method1(int n) {
        if(n==1){
            return 1;
        }
        int[]res=new int[n];
        res[0]=1;
        res[1]=2;
        for (int i = 2; i < n; i++) {
            res[i]=res[i-1]+res[i-2];
        }
        return res[n-1];
    }

    public int practice(int n) {
        if(n<2){
            return n;
        }
        int[]dp=new int[n+1];
        dp[1]=1;
        dp[2]=2;
        for (int i = 3; i < dp.length; i++) {
            dp[i]=dp[i-1]+dp[i-2];
        }
        return dp[n];
    }
}
